The computer industry is continually creating new generations of processors that provide increased speed, additional features, and other improvements over processors from previous generations.
Instead of requiring a customer to replace a computer when a new processor becomes available, computers are being produced that accept several different processors. Consequently, the customer can change a computer to a different processor by merely replacing the existing processor with a new processor. A processor change can be motivated for a variety of reasons. For example, servers (a type of computer) are being produced that can accept processors from either of two processor families, such as the Itanium processor family from Intel or the PA-RISC processor family from Hewlett-Packard. Sometimes, it is desirable for the customer to change the processor in the server to take advantage of an improved processor architecture. In other situations, the customer may be forced to change processors when a manufacturer discontinues support for a particular processor. Alternatively, a manufacturer may initially sell a customer a server with a low-end processor. As the customer's computing needs grow, the customer may wish to increase the server's capabilities by upgrading the server processor.
Each processor typically requires its own firmware because of the differences in the processor architectures from processor to processor. Throughout the specification, claims, and drawings, the term “firmware” means the software, including code and data structures, that controls a computer between the time it is turned on (hereafter “start”) and the time the primary operating system takes control of the computer. Firmware's responsibilities include determining the hardware configuration, testing and initializing the hardware, loading the operating system, providing interactive debugging facilities in case of faulty hardware or software, and runtime services for the operating system. See, IEEE Std. 1275-1994, Standard for Boot Firmware (Initialization Configuration) (rev. 2.1); IEEE Standard Dictionary of Boot Firmware (Initialization Configuration) (rev. 2.1); IEEE Standard Dictionary of Electrical and Electronics Terms 411 (6th ed. 1996). Firmware may include any platform specific software, code, and data structures.
One of the tasks that the processor performs while executing the firmware is to configure itself and/or hardware peripherals, such as disk drives and other bus interfaces. Because different types of processors typically have different architectures and, thus, have different configuration requirements, each type of processor typically requires different firmware. Consequently, a problem with upgrading a processor is that the firmware typically must also be changed. Since the firmware typically resides on a memory chip that is separate from the processor, the user often changes the firmware by replacing this chip, or by replacing the board on which the chip resides. Such replacement can be difficult, time consuming, and/or expensive for the customer, particularly when upgrading multiple computers.
FIG. 1 is a schematic block diagram of a conventional computer 100. Examples of the computer 100 include, but are not limited to, a server, general purpose personal computer (PC), hand-held or lap top computers, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, network computers, Personal Communication Systems (PCS), Personal Digital Assistants (PDA), minicomputers, mainframe computers, and distributed computing environments that include any one or more of the above computing systems or devices. In a basic configuration (represented by dashed line 106), the computer 100 typically includes at least one processor 102 and system memory 104. The processor 102 is the primary intelligence and controller for the computer 100, and can be any one of many commercially available processors available in the industry. Depending on the configuration of the computer 100, the system memory 104 may include a volatile memory 120 (such as RAM), and a non-volatile memory 122 (such as ROM or flash memory, etc.), or some combination of the two memory types.
The computer 100 may also have an advanced configuration that has additional features and functionality. For example, the computer 100 may also include additional storage (removable and/or non-removable) including, but not limited to, magnetic or optical disks or tape. Such additional storage is illustrated in FIG. 1 by removable storage 108 and non-removable storage 110. Computer storage media includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. The system memory 104, removable storage 108 and non-removable storage 110 are all examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 100. Any such computer storage media may be part of computer 100.
The computer 100 may also include communications connection(s) 112 that allow the computer to communicate with other computers/devices. Computer 100 may also have input device(s) 114 such as keyboard, mouse, pen, voice input device, touch input device, etc. Output device(s) 116 such as a display, speakers, printer, etc. may also be included. All these devices are well known in the art and will not be discussed. As discussed above, the system memory 104 typically includes a non-volatile memory, such as a non-volatile flash memory 122, which stores the firmware 124 for the processor 102. The flash memory 122 can be any type of non-volatile read/write memory, such as an EEPROM that can be electronically erased and reprogrammed, thus allowing convenient upgrading.
During the start of the computer 100, the processor 102 executes the firmware stored in the flash memory 124. While executing the firmware 124, the processor 102 initializes and tests the components of the computer 100 such as the processor unit 102, chipsets, and memory.
Unfortunately, when a customer changes the processor 102 to a different architecture, the customer typically must replace the non-volatile memory 122 that contains the firmware 124, or the circuit board (not shown) that carries the non-volatile memory 122.